/* jshint esversion: 6 */
import axios from 'axios'
import qs from 'qs'
let v = new Vue();
var apiConfig = require('../../config/api.config.js'); //引入api.config.js
// 响应时间
axios.defaults.timeout = 1000000
// 配置cookie
axios.defaults.withCredentials = false
// 配置请求头
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
// 静态资源

// 配置接口地址
// axios.defaults.baseURL =  apiConfig.baseURL; //本地启动使用
// 配置vyv3
const BaseUrl = window._CONFIG['domianWYV3URL']
const baseUrl = window._CONFIG['domianURL']
// console.log(BaseUrl);

// axios.defaults.baseURL = apiConfig.baseURL
// axios.defaults.baseURL = window._CONFIG['domianURL'] || "/apis";

var loadingInstance
var loadingTime = 0


let apiBaseUrl = window._CONFIG['domianURL'] || apiConfig.baseURL;
// axios.defaults.baseURL =  apiBaseUrl //线上启动使用
// axios.defaults.baseURL = window._CONFIG['domianURL'] //本地启动使用

// console.log(window._CONFIG['domianURL']);
// // 创建 axios 实例
// console.log("apiBaseUrl= ", apiConfig.baseURL)

const service = axios.create()

// POST传参序列化(添加请求拦截器)
service.interceptors.request.use(
    config => {
        // console.log(config);
        let isV3 = config.url.split('/').indexOf('wytv3') != '-1'
        if (config.method != "put") {
            // console.log(isV3);
            /*
             以前请求不规范全部使用post 参数接收 @RequestParam(required = false) Integer state,int schoolid, String searchText,
             现在改成body传参
             v3post接口全部兼容处理  -- 不需要 qs.stringify(config.data)
            */
            if (!isV3) {
                config.data = qs.stringify(config.data)
            } else {
            }
        } else {
            // config.data = qs.stringify(config.data)
            config.headers['Content-Type'] = 'application/json;charset=utf-8'
        }
        // 发送请求携带token
        // const token = localStorage.getItem('token') || ''
        // if (token) {
        //     config.headers['token'] = token
        // }
        // console.log('config=>', config);

        return config
    },
    err => {
        // loadingInstance.close()
        // v.$message.error('请求错误')
        return Promise.reject(err)
    }
)
// 返回状态判断(添加响应拦截器)
service.interceptors.response.use(
    res => {
        // console.log(res.data);
        // **注意 res.data.code 要根据后端回的格式自行修改**
        if (res.status === 200) {
            // loadingInstance.close()
            return res.data
        } else {

            // loadingInstance.close()
            // v.$message.error(res.data.msg)
        }
    },
    err => {
        // loadingInstance.close()
        // v.$message.error('请求失败，请稍后再试')
        return Promise.reject(err)
    }
)
// 发送请求
export function post(url, params) {
    return new Promise((resolve, reject) => {
        service.post(baseUrl + url, params).then(
            res => {
                resolve(res)
            },
            err => {
                reject(err)
            }
        ).catch()
    })
}
// 发送请求
export function get(url, params) {
    return new Promise((resolve, reject) => {
        service.get(baseUrl + url + `?` + qs.stringify(params)).then(
            res => {
                resolve(res)
            },
            err => {
                reject(err)
            }
        ).catch()
    })
}

//重构get方法
export function getAction(url, params) {
    return new Promise((resolve, reject) => {
        service.get(baseUrl + url + `?` + qs.stringify(params)).then(
            res => {
                resolve(res)
            },
            err => {
                reject(err)
            }
        ).catch()
    })
}
//重构get方法
export function getActionV3(url, params) {
    return new Promise((resolve, reject) => {
        service.get(BaseUrl + url + `?` + qs.stringify(params)).then(
            res => {
                resolve(res)
            },
            err => {
                reject(err)
            }
        ).catch()
    })
}
//重构post方法
export function httpAction(url, params) {
    return new Promise((resolve, reject) => {
        service.post(baseUrl + url, params).then(
            res => {
                resolve(res)
            },
            err => {
                reject(err)
            }
        ).catch()
    })
}
// 发送请求
export function wyv3get(url, params) {
    return new Promise((resolve, reject) => {
        service.get(BaseUrl + url + `?` + qs.stringify(params)).then(
            res => {
                resolve(res)
            },
            err => {
                reject(err)
            }
        ).catch()
    })
}

// 发送请求
export function wyv3put(url, params) {
    return new Promise((resolve, reject) => {
        console.log(params);
        service.put(BaseUrl + url, params, {
            headers: {
                "Content-Type": "application/json;charset=UTF-8"
            }
        }).then(
            res => {
                resolve(res)
            },
            err => {
                reject(err)
            }
        ).catch()
    })
}
// 删除请求
export function wyv3del(url, params) {
    return new Promise((resolve, reject) => {
        service.delete(BaseUrl + url + `?` + qs.stringify(params)).then(
            res => {
                resolve(res)
            },
            err => {
                reject(err)
            }
        ).catch()
    })
}
export function wyv3post(url, params) {
    return new Promise((resolve, reject) => {
        service({
            url: BaseUrl + url,
            method: "POST",
            data: params,
            headers: {
                "Content-Type": "application/json; charset=UTF-8",
            },
            responseType: "json",
        }).then(
            res => {
                resolve(res)
            },
            err => {
                reject(err)
            }
        ).catch()
    })
}
export function uploadRequest(url, params) {
    return new Promise((resolve, reject) => {
        console.log(params);
        service.post(baseUrl + url, params, {
            headers: {
                "Content-Type": "multipart/form-data;boundary='----WebKitFormBoundaryKPjN0GYtWEjAni5F'"
                // "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
            }
        }).then(res => {
            resolve(res.data);
        }).catch(error => {
            reject(error);
        })
    })
};


export function put(url, data) {
    return service.put(baseUrl + url, data)
        .then(response => {
            return response.data;
        })
        .catch(error => {
            console.error(error);
            throw error;
        })
}



export default {
    post,
    get,
    wyv3get,
    put,
    wyv3put,
    wyv3post,
    wyv3del
}







// import axios from 'axios';
// // import Cookies from "js-cookie";

// // import {
// //     Message,
// //     Loading
// // } from 'element-ui'
// import config from './config';
// import router from '@/router';
// import apiConfig from '../../config/api.config.js'

// axios.defaults.baseURL = apiConfig.baseURL
// axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
// axios.defaults.withCredentials = false;

// var http = axios.create({
//     // baseURL:"XXXX",
//     timeout: 10000
// })
// //请求拦截
// http.interceptors.request.use((config) => {
//     // if(config.method == "post"){
//     //     config.data = qs.stringify(config.data);
//     // }
//     return config;
// }, (err) => {
//     return Promise.reject(err)
// })
// //响应拦截
// http.interceptors.response.use((res) => {
//     return res.data
// }, (err) => {
//     return Promise.reject(err)
// })


// export default (data = null) => {
//     return http.post(data);
// }
